// function debounce(fn, wait) {
//   let timer = null
//   return function () {
//     let _this = this
//     const args = arguments
//     if (timer) {
//       clearTimeout(timer)
//     }
//     timer = setTimeout(() => {
//       fn.apply(_this, args)
//     }, wait);
//   }
// }

// // 时间戳
// function throttle1(fn, wait) {
//   let time = 0;
//   return function () {
//     let _this = this;
//     let args = arguments;
//     let now = Date.now();
//     if (now - time > wait) {
//       fn.apply(_this, args);
//       time = now;
//     }
//   };
// }

// // 方式2: 使用定时器
// function thorttle2(fn, wait) {
//   let timer;
//   return function () {
//     let _this = this;
//     let args = arguments;

//     if (!timer) {
//       timer = setTimeout(function () {
//         timer = null;
//         fn.apply(_this, args);
//       }, wait);
//     }
//   };
// }

// const list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// const it = list[Symbol.iterator]();

// it.next();

// function aa(name) {
//   console.log(name);
//   console.log(arguments);
// }
// aa(123, 45566)

// var p1 = new Promise((resolve, reject) => {
//   setTimeout(resolve, 1000, 'one');
// });
// var p2 = new Promise((resolve, reject) => {
//   setTimeout(resolve, 2000, 'two');
// });
// var p3 = new Promise((resolve, reject) => {
//   setTimeout(resolve, 3000, 'three');
// });
// var p4 = new Promise((resolve, reject) => {
//   setTimeout(resolve, 4000, 'four');
// });
// var p5 = new Promise((resolve, reject) => {
//   reject('reject');
// });

// Promise.all([p1, p2, p3, p4, p5]).then(values => {
//   console.log(values);
// }, reason => {
//   console.log(reason)
// });
// //结果：
// //reject
// //Promise {<fulfilled>: undefined}

// var p1 = new Promise((resolve, reject) => {
//   setTimeout(resolve, 4000, 'one');
// });
// var p2 = new Promise((resolve, reject) => {
//   setTimeout(resolve, 3000, 'two');
// });
// var p3 = new Promise((resolve, reject) => {
//   setTimeout(resolve, 2000, 'three');
// });
// var p4 = new Promise((resolve, reject) => {
//   setTimeout(resolve, 1000, 'four');
// });
// var p5 = new Promise((resolve, reject) => {
//   reject('reject');
// });

// Promise.allSettled([p1, p2, p3, p4, p5]).then(values => {
//   console.log(values);
// }, reason => {
//   console.log(reason)
// });
//结果：
//Promise {<pending>}
//(5) [{…}, {…}, {…}, {…}, {…}]
//0: {status: "fulfilled", value: "one"}
//1: {status: "fulfilled", value: "two"}
//2: {status: "fulfilled", value: "three"}
//3: {status: "fulfilled", value: "four"}
//4: {status: "rejected", reason: "reject"}
//length: 5
//[[Prototype]]: Array(0)


// 扁平化数组到树形结构：
// // 示例用法
// const flatArray = [
//   { id: 1, name: 'Node 1', parentId: null },
//   { id: 2, name: 'Node 1.1', parentId: 1 },
//   { id: 3, name: 'Node 1.2', parentId: 1 },
//   { id: 4, name: 'Node 1.1.1', parentId: 2 },
// ];

// const arrayToTree = (data) => {
//   const map = {}
//   const res = []
//   data.forEach((item) => {
//     map[item.id] = { ...item, children: [] }
//   })
//   data.forEach((item => {
//     if (item.parentId === null) {
//       res.push(map[item.id])
//     } else {
//       if (map[item.parentId]) {
//         map[item.parentId].children.push(map[item.id])
//       }
//     }
//   }))
//   return res
// }

// const tree = arrayToTree(flatArray);
// console.log(JSON.stringify(tree, null, 2));


// // 树形结构到扁平化数组：
// function treeToArray(tree) {
//   const treeArr = []
//   tree.forEach((item) => {

//   })
// }

// const treeData = [
//   {
//     id: 1,
//     name: 'Node 1',
//     children: [
//       {
//         id: 2,
//         name: 'Node 1.1',
//         children: [
//           {
//             id: 4,
//             name: 'Node 1.1.1',
//           },
//         ],
//       },
//       {
//         id: 3,
//         name: 'Node 1.2',
//       },
//     ],
//   },
// ];

// const flatArray = treeToArray(treeData);
// console.log(JSON.stringify(flatArray, null, 2));

// function bbsort(arr = []) {
//   const len = arr.length
//   for (let i = 0; i < len - 1; i++) {
//     for (let j = 0; j < len -1 -i; j++) {
//       if (arr[j] > arr[j + 1]) {
//         const temp = arr[j + 1]
//         arr[j  + 1] = arr[j]
//         arr[j] = temp
//       }
//     }
//   }
//   return arr
// }

// function quickSort(arr) {
//   if (arr.length <= 1) {
//       return arr;
//   }

//   const pivotIndex = Math.floor(arr.length / 2);
//   const pivot = arr.splice(pivotIndex, 1)[0];
//   const left = [];
//   const right = [];

//   for (let i = 0; i < arr.length; i++) {
//       if (arr[i] < pivot) {
//           left.push(arr[i]);
//       } else {
//           right.push(arr[i]);
//       }
//   }

//   return quickSort(left).concat([pivot], quickSort(right));
// }

// // 使用示例
// const arr = [3, 6, 8, 10, 1, 2, 1, 4, 7, 9];
// console.log(quickSort(arr)); // 输出: [1, 1, 2, 3, 4, 6, 7, 8, 9, 10]

// function quickSt(arr) {
//   if (arr.length <= 1){
//     return arr
//   }
//   const midIndex = Math.floor(arr.length/2)
//   const mid = arr.splice(midIndex,1)[0]
//   const left = []
//   const right = []
//   for (let i = 0; i < arr.length; i++) {
//     if (arr[i] < mid) {
//       left.push(arr[i])
//     } else {
//       right.push(arr[j])
//     }
//   }
//   return quickSt(left).concat([mid], quickSt(right))
// }